public class Dog {
    public String name;
    public int age;
    public String color;

    public Dog(){
        //打印构造方法是在对象实体化的时候调用的
        //没有写任何构造方法时，会默认存在一个不带参数的构造方法
        //但，有其他构造方法时，编译器就不会提供不带参数的构造方法

        this("大黄", 9, "白色");
        //调用当前类中的其他构造方法，带有3个参数的构造方法
        System.out.println("打印构造方法");


    }

//    public Dog(String name, int age) {
//        this.name = name;
//        this.age = age;
//    }

    public Dog(String name, int age, String color){
        this.name=name;
        this.age =age;
        this.color =color;

    }

    public void eat(){
        System.out.println(this.name+"eat breakfast");
    }
    public void sleep(){
        System.out.println(this.name+"is sleeping");
    }
    public void show(){
        System.out.println(" 姓名 "+this.name+" 年龄 "+this.age+" 颜色 "+this.color);

    }

    public static void main(String[] args) {
        Dog dog1=new Dog();  //通过new，来实例化多个对象

        dog1.show();//姓名null年龄0颜色null
        //对于类成员变量，在没有初始化之前，都有一个默认值， 对引用变量默认值是null，简单类型都是对应的0值

        Dog dog2=new Dog("大白",12,"白色");
        dog2.show() ;
        //这是全新化的对象，栈的内存是有限的的，不能无限实例化对象
        //引用.访问成员变量和方法
    }

}
